package com.invengo.library_rfid.analyze.utils.uhf.formatHelp;

public class CEpcCode {
    // 序列号(30)
    public long m_lSerialID = 0;
    // 图书馆代码(16)
    public long m_lLibCode = 0;
    // 标签类型(4)
    public long m_lLibTagType = 0;
    // 标签剩余的1个字段
    public long m_lRemain1 = 0;
    // 标签剩余的1个字段
    public long m_lRemain2 = 0;
    // 专门用重庆门禁返回
    public byte[] m_wBCRC = new byte[2];
    // EPC码长度，单位：字节
    public byte m_nEPCLength = 12;
    // 名称：版本号
    public long m_lVersion = -1;

    // 获取byte数组
    public int getBytes(byte[] byResult) {
        CBitClass tmpClass = new CBitClass();
        tmpClass.AddBits(m_lSerialID, 30);
        tmpClass.AddBits(m_lLibCode, 16);
        tmpClass.AddBits(m_lLibTagType, 4);
        tmpClass.AddBits(m_lRemain1, 44);
        tmpClass.AddBits(m_lRemain2, 2);
        return tmpClass.GetBytes(byResult);
    }

    // 重载ToString函数
    @Override
    public String toString() {
        CBitClass tmpBitClass = new CBitClass();
        tmpBitClass.AddBits(m_lSerialID, 30);
        tmpBitClass.AddBits(m_lLibCode, 16);
        tmpBitClass.AddBits(m_lLibTagType, 4);
        tmpBitClass.AddBits(m_lRemain1, 44);
        tmpBitClass.AddBits(m_lRemain2, 2);
        return tmpBitClass.toString();
    }

    // 读者序号2
    public static CReaderEpcCode2 toCReaderEpcCode2(CEpcCode epcCode) throws Exception {
        // 获取Bit数据
        byte[] byData = new byte[12];
        if (12 != epcCode.getBytes(byData)) {
            return null;
        }
        return new CReaderEpcCode2(byData);
    }
}


